Jeeves A Print Server Version 1.0 Copyright I.R. Jennings 1994 Biology Department University of York, UK. 02 DISCLAIMER OF WARRANTY THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IAN R. JENNINGS OR THE UNIVERSITY OF YORK BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES. Copyright Notice Copyright I.R. Jennings 1994 All rights reserved. Trademark Acknowledgements IBM PC, IBM Proprinter: International Business Machines Corp. Novell, Netware, IPX, SPX: Novell, Inc. Epson EX-800, LX850: Seiko Epson Corporation HP LaserJet III, HP LaserJet 4: Hewlett-Packard Company Star LaserPrinter 8III: Star Micronics Company 03 Contents INTRODUCTION..............................................4 GETTING STARTED...........................................5 WHAT YOU NEED...........................................5 QUICK START.............................................5 Setting Up the Server................................5 Setting Up the Client PCs............................6 DETAILED INSTALLATION...................................8 Setting Up the Server................................8 Setting Up the Client PCs...........................11 JEEVES...................................................14 JEEVES INITIALISATION FILE.............................14 Port Statements.....................................14 Temp Directory Statement............................14 Screen Save Statement...............................14 Screen Update Period................................15 Examples............................................15 SCREEN DISPLAYS........................................15 Key Assignments.....................................16 Queue Display.......................................16 Connection Display..................................16 Statistics Display..................................17 TERMINATING JEEVES.....................................17 LISTING USERS..........................................18 CLIENT PROGRAMS..........................................19 JLINK..................................................19 JSET INITIALISATION FILE...............................19 JSET...................................................20 Creating a New Print Device.........................21 Redirecting an Existing Device......................22 Removing a Device...................................22 Inserting Prologue and Epilogue data................22 Using Jlink with Windows............................23 Compatibility with the Netware Shell................24 JPRINT.................................................25 APPENDICES...............................................26 APPENDIX A: SYSTEM REQUIREMENTS.......................26 APPENDIX B: ACQUIRING IPX.............................27 The Crynwr Collection of Packet Drivers.............27 Packet Driver IPX...................................27 APPENDIX C: SYSTEM MESSAGES...........................28 Jeeves..............................................28 Jset................................................29 Jprint..............................................31 APPENDIX D: TECHNICAL NOTES...........................33 Specifications......................................33 Maximum values......................................33 Maximum character string lengths....................33 04 INTRODUCTION Jeeves is an independent local area network (LAN) printer server. It runs on a networked IBM PC compatible computer and enables users on the LAN to share one or more printers or other output devices such as a plotter. Jeeves uses Novell's SPX protocol to communicate between itself and its client PCs. Each printer or output device is attached to a print queue which stores incoming print jobs until the printer is ready to receive the data. Software on the client PCs enables DOS or Windows applications to send print requests to a specified queue and thus to the queue's associated printer. The client software can also insert and append predefined data to each print job which is a useful feature for programmable printers (such as those which can emulate different printers). There is no need for the client PCs to login to Jeeves as this is done automatically so the printing process is transparent to the user. Although Jeeves is limited to 20 simultaneous connections (i.e. up to 20 client PCs can communicate with Jeeves at the same time), these connections are only made when the client PCs' applications actually start printing so the maximum number of users wanting to print via Jeeves is essentially unlimited. Jeeves is not dependent on other network print or file servers though it will work along side them. Further, Jeeves is not at all chatty as it only sends out Routing Information Protocol request broadcasts when it starts up and doesn't advertise itself as a service. As Jeeves uses Novell's SPX protocol, it requires the IPX protocol driver software (IPX.COM or IPXODI.COM) but it doesn't need the Netware shell, NETX, or VLMs. 05 GETTING STARTED What you need - One or more printers. Jeeves can support up to seven printers; three driven via the parallel ports and four driven by the serial ports (this assumes, of course, that the computer which is running Jeeves has the necessary hardware). - IBM PC or compatible computer. This will be used as a dedicated printer server and will run the Jeeves program. The minimum requirement is an 8088 system, 10Mb disk, printer port and text video adapter running DOS 3.3 or above. See Appendix A for details of system requirements. - Local Area Network. This must be capable of supporting Novell's IPX protocol. - Network Interface Cards. One for the printer server above and one for each client PC requiring access the printer server. - Novell's IPX (and SPX) Driver Software. This can be either be the dedicated IPX.COM file or the Open Data-Link Interface version IPXODI.COM. You may have obtained these drivers with your network card. Alternatively, see Appendix B for acquiring the IPX/SPX driver. - Client PCs. These are the PCs which will issue the print requests. They must be running DOS 3.3 or above. Quick Start This section assumes that you are familiar with DOS and installing IPX and is included for those who wish to get the programs up and running without having to wade through pages of documentation. Note that if you simply want to test Jeeves, you don't need a dedicated PC; you can install the software in a directory on any networked PC with an attached printer and once tested, delete the files and directory. You will, however, require a second networked PC to act as a client to issue the print requests and you wont be able to run other software on the first PC while Jeeves is running. If the programs don't respond as described, see the sections "Detailed Installation" or Appendix C (System Messages) for more information. Setting Up the Server 1. Set the CONFIG.SYS "files=" command to 30 or more. 2. Create a directory on the server disk drive (e.g. c:\jeevdir) and copy the following files to it: JEEVES.EXE - the program executable JEEVES.INI - the initialisation file JEEVLIST.EXE - a utility to list users. 3. Create another directory (e.g. C:\JEEVDIR\TMPFILES). This is where Jeeves will store temporary files. 06 4. If you are using a serial port, set the port parameters with the DOS MODE command. 5. The shipped version of the JEEVES.INI file will cause Jeeves to print to LPT1 via a print queue named PRINTER1 and to store the temporary files in the directory C:\JEEVDIR\TMPFILES. If a printer is not connected to LPT1 or the temporary files directory is incorrect, then you will have to edit the JEEVES.INI file (see "Jeeves Initialisation File"). Otherwise, you can use JEEVES.INI as it is, though you'll probably want to change at least the print queue name at some point in the future. 6. Edit the IPX.COM configuration file, SHELL.CFG, or the ODI version, NET.CFG, to set the number of IPX sockets to 25 and the number of SPX connections to 22. The new lines should be: ipx sockets = 25 spx connections = 22 7. Load the IPX driver. Don't use the ODI "a" option as this will prevent SPX from loading. 8. Make the program directory (e.g. C:\JEEVDIR) the current directory and enter JEEVES. You will then be prompted to create the user database file IDENTIFY.LST to which you should type "Y". Jeeves should now be running and displaying information about the print queue PRINTER1. 9. Press the F3 key to display the current connection screen and note Jeeves' address. You'll need this to set up the client PCs. Setting Up the Client PCs 1. Create a directory on the client PC (e.g. C:\JEEVES) and copy the following files to it: JLINK.SYS - the Jeeves device driver JSET.EXE - the device driver maintenance program JSET.INI - the initialisation file JPRINT.COM - a utility to print files on Jeeves 2. Insert a line in the CONFIG.SYS file to load the JLINK.SYS device driver. 3. Insert the newly created directory in the AUTOEXEC.BAT path statement. 4. Insert the IPX driver in the AUTOEXEC.BAT file. You may not need an IPX configuration file (SHELL.CFG or NET.CFG) as the default values are sufficient. 5. Reboot the computer to load JLINK.SYS, the IPX driver and set the path. 6. Edit the JSET.INI file, replacing the "JEEVES=network_number : node" statement with the actual address of Jeeves. This address is shown at the top of the Jeeves Connection Display. This is the only critical statement in the JSET.INI file but you can edit the other statements now if you so wish (see "Jset Initialisation File"). 07 7. Assuming Jeeves is running, you can now test the connection by entering the following command at the DOS prompt: jprint /L The List switch should display the list of print queues on Jeeves (if you have used the shipped version of JEEVES.INI, then only the one queue, PRINTER1, will be shown). You can print a file to the printer connected to one of the print queues by entering the command: jprint [path]filename print_queue [/FF] For example, the command jprint c:\config.sys printer1 /ff would print the CONFIG.SYS file on the printer served by the queue named PRINTER1. The "/ff" switch will terminate the printing with a form-feed (end of page) command. 8. You can redirect a client PC's existing LPTn ports (both the device and the BIOS interrupt) to a Jeeves print queue by entering the command: jset lptn print_queue 9. You can also create an entirely new device through which data can be printed. For example, the command jset hplj4 hplj4 would create a device called HPLJ4 and link this to a Jeeves print queue of the same name. The DOS command "copy file.pcl hplj4" would send the file to the HPLJ4 queue on Jeeves. This section has been a brief guide to installing and using the Jeeves suite of programs. You may now wish to skip the next section and move on to the detailed description of each of the programs. 08 Detailed Installation The Jeeves programs come in two groups of files; the server files which are installed on the computer acting as the printer server and the client files which are installed on the client PCs enabling them to print to the server printers. Server files: JEEVES.EXE - the actual program JEEVES.INI - the initialisation file for the Jeeves program JEEVLIST.EXE - an optional utility to list users. Client files: JLINK.SYS - the Jeeves device driver JSET.EXE - the device driver maintenance program JPRINT.COM - a utility to print files on Jeeves JSET.INI - the initialisation file for JSET.EXE and JPRINT.COM The other files you will need (in addition to the DOS system files) are the network driver files. In most cases you will have obtained these with your network card but you may also be able to obtain them from sites on the INTERNET (see Appendix B). The network driver files come in two forms; dedicated and Open Data-Link Interface (ODI) versions. Dedicated IPX.COM - this has to be "bound" to a specific network card SHELL.CFG - the configuration file ODI LSL.COM - the Link Support Layer NETDRV.COM - the network interface card driver (e.g. NE2000.COM) IPXODI.COM - the IPX/SPX protocol driver NET.CFG - the configuration file The essential difference between the dedicated and ODI versions is that the dedicated version is setup for a specific type of network card and will run only the IPX protocol. The ODI version, on the other hand, will work with different network cards simply by changing the network card driver file and will simultaneously support different protocols by adding the appropriate protocol driver. There are other network driver variations such as using packet drivers. See Appendix B for more information. Setting Up the Server This section is a step by step guide to setting up the hardware and installing the software on the PC which will be the printer server. The system requirements for this PC are listed in Appendix A. 1. Install the network interface card in the PC according to the manufacturer's instructions and connect it to the LAN. 09 2. Connect the printer or printers to the parallel or serial ports in the PC, noting which printer goes to which port. If you are using a printer driven from a serial port, make a note of the printer's serial parameters (baud, parity, etc.); you will need these values to set the DOS mode command in the AUTOEXEC.BAT file. 3. Create the directory C:\JEEVDIR (you may use a different drive/directory) and copy the following files to it: JEEVES.EXE - the program executable JEEVES.INI - the initialisation file JEEVLIST.EXE - a utility to list users. 4. If you are using the ODI version of the IPX driver, then skip to paragraph 6. 5. The following applies to the dedicated IPX driver only. a) Copy the IPX.COM file to the program directory C:\JEEVDIR. b) Use a DOS editor to create the IPX configuration file SHELL.CFG in the program directory. Insert the following lines in the file: ipx sockets = 25 spx connections = 22 c) Edit the AUTOEXEC.BAT file, inserting the following lines (the mode command is only required for serial printers. Change the drive/directory as appropriate): mode comn: baud=b parity=p data=d stop=s cd c:\jeevdir ipx jeeves d) Now skip to paragraph 7. 6. The following applies to the ODI driver only. a) Copy the following files to the program directory C:\JEEVDIR. Copy the specific network card ODI driver (e.g. NE2000.COM, SMC8000.COM, etc.) in place of NETDRV.COM. LSL.COM - the Link Support Layer NETDRV.COM - the network interface card driver (e.g. NE2000.COM) IPXODI.COM - the IPX/SPX protocol driver b) Copy the default NET.CFG file that came with the network card software to the program directory C:\JEEVDIR or use a DOS editor to create a new NET.CFG file. Insert the following lines at the beginning of the file before any section headings that may exist: ipx sockets = 25 spx connections = 22 10 c) Edit the AUTOEXEC.BAT file, inserting the following lines (the mode command is only required for serial printers. Change the drive/directory and netdrv as appropriate): mode comn: baud=b parity=p data=d stop=s cd c:\jeevdir lsl netdrv ipxodi jeeves 7. Check that the computer's CONFIG.SYS file contains the line "files=n" where n is greater than or equal to 30. If the "files" command is missing or the value of n is less than 30, then insert or change the line to "files=30". 8. Create a subdirectory of JEEVDIR called TMPFILES (i.e. C:\JEEVDIR\TMPFILES). This is where Jeeves will store temporary files. You can create a different directory if you wish, but you must use a directory other than the root directory as Jeeves will not allow temporary files to be stored in the root directory. 9. Edit the JEEVES.INI file to set a print queue name and attach it to a parallel or serial port. You will also need to specify where temporary files should be stored. a) The general format to define a queue name and assign it to a port is: port = print_queue_name [ | printer description ] [/r] where port is a parallel or serial port (LPT1 - LPT3 or COM1 - COM4) print_queue_name is the name of the print queue which serves the printer attached to port printer description is an optional general description of the printer. This is separated from the print_queue_name by the vertical line character (ASCII 124). /r is the optional reset switch. This sends a hardware reset command to the printer through the parallel port after each print job. The switch is ignored for COM ports. For example, to create a print queue called "HPLJ4" which serves a printer connected to the parallel port LPT1, enter the following line in the JEEVES.INI file: lpt1 = hplj4 | Hewlett-Packard LaserJet IV printer b) The JEEVES.INI file should also contain a line to specify where temporary files should be stored. The general format of the line is: temp directory = [drive:] path 11 For example, to store the temporary files in the directory c:\jeevdir\tmpfiles, enter the following line in the JEEVES.INI file: temp directory = c:\jeevdir\tmpfiles More information about defining print queue names and other options contained in the JEEVES.INI file can be found in "Jeeves Initialisation File". 10. Reboot the computer for the setup to take effect. The AUTOEXEC.BAT file will load the network drivers and start Jeeves. You will then be prompted to create the user database file IDENTIFY.LST to which you should type "Y". Jeeves should now be running and displaying information about the first print queue listed in the JEEVES.INI file. 11. Press the F3 key to display the current connection screen and note Jeeves' address. You'll need this to set up the client PCs. Setting Up the Client PCs This section is a step by step guide to setting up the hardware and installing the software on the client PCs. 1. Install the network interface card in the PC according to the manufacturer's instructions and connect it to the LAN. 2. Create a directory on the client PC (e.g. C:\JEEVES) and copy the following files to it: JLINK.SYS - the Jeeves device driver JSET.EXE - the device driver maintenance program JSET.INI - the initialisation file JPRINT.COM - a utility to print files on Jeeves 3. If you are using the ODI version of the IPX driver, then skip to paragraph 5. 4. The following applies to the dedicated IPX driver only. a) Copy the IPX.COM file to the directory C:\JEEVES. b) Edit the AUTOEXEC.BAT file. Add the above directory (C:\JEEVES) to the path statement and insert the following line: c:\jeeves\ipx c) You may not require the IPX configuration file (SHELL.CFG) as the default values should work. d) Now skip to paragraph 6. 5. The following applies to the ODI driver only. a) Copy the following files to the directory C:\JEEVES. Copy the specific network card ODI driver (e.g. NE2000.COM, SMC8000.COM, etc.) in place of NETDRV.COM. 12 LSL.COM - the Link Support Layer NETDRV.COM - the network interface card driver (e.g. NE2000.COM) IPXODI.COM - the IPX/SPX protocol driver b) Copy the default NET.CFG file that came with the network card software to the root directory of the drive. You shouldn't need to change this file as the default values should work. c) Edit the AUTOEXEC.BAT file. Add the directory C:\JEEVES to the path statement and insert the following lines (Change netdrv to the appropriate network card driver): c:\jeeves\lsl c:\jeeves\netdrv c:\jeeves\ipxodi 6. Edit the CONFIG.SYS file and insert the line: device[high] = c:\jeeves\jlink.sys The "high" option may be included if DOS has access to upper memory blocks (see user's guide for DOS 5 or above). 7. Edit the JSET.INI file, replacing the "JEEVES=network_number : node" statement with the actual address of Jeeves. This address is shown at the top of the Jeeves Connection Display. This is the only critical statement in the JSET.INI file but you can edit the other statements now if you so wish (see "Jset Initialisation File"). 8. Reboot the computer to load the Jeeves device driver JLINK.SYS, the IPX drivers and to include the C:\JEEVES directory in the path. 9. Assuming Jeeves is running, you can now test the connection by entering the following command at the DOS prompt: jprint /L The List switch should display the list of print queues on Jeeves as defined in the JEEVES.INI file on the server PC. You can print a file to the printer connected to one of the print queues by entering the command: jprint [path]filename print_queue [/FF] For example, the command jprint c:\config.sys hplj4 /ff would print the CONFIG.SYS file on the printer served by the queue named HPLJ4. The "/ff" switch will terminate the printing with a form- feed (end of page) command. 10. You can redirect a client PC's existing LPTn ports to a Jeeves print queue by entering the command: jset lptn print_queue 13 11. You can also create an entirely new device through which data can be printed. For example, the command jset hplj4 hplj4 would create a device called HPLJ4 and link this to a Jeeves print queue of the same name. The DOS command "copy file.pcl hplj4" would send the file to the HPLJ4 queue on Jeeves. 14 JEEVES You start Jeeves by typing the command jeeves at the DOS prompt (you can also include the Jeeves command in the AUTOEXEC.BAT file so that it starts up automatically). Jeeves then goes through its startup procedures, one of which is to read its initialisation file JEEVES.INI from the current directory. Jeeves Initialisation File The Jeeves initialisation file JEEVES.INI, contains statements which identify the print queues connected to the computer's parallel and serial ports. It also tells Jeeves where it should store temporary files and contains information about the screen save option and screen refresh rate. Port Statements The port statements are in the form: portn = queue_name [ | device description ] [/r] where port is either LPT for parallel ports or COM for serial ports and n is the port number; 1 to 3 for LPT or 1 to 4 for COM. The queue_name identifies the print queue which sends data to portn and is usually the abbreviated name of the printer or device connected to the port. Any spaces in queue_name will be removed and low case letters are converted to high case. Following the vertical line character "|", is the optional device description which details the printer or device serviced by the queue. The optional reset switch "/r", sends a hardware reset command to the printer through the parallel port after each print job. This ensures that the printer is set to its default state at the end of every print job. However, you should check your printer documentation before using this facility as some printers will reset before completing the last print job. The switch has no effect on COM ports. Temp Directory Statement Temporary files are stored in the subdirectory specified by the temp directory statement which has the form: temp directory = [drive:]path Jeeves will not allow temporary files to be stored in a root directory of a drive. Screen Save Statement The screen saver reduces the wear on the computer monitor by blanking the screen and displaying a moving pattern. This occurs when Jeeves has been idle (no connections or keyboard activity) for a specified time. The screen will be restored when a key is pressed or a connection made to a remote computer. The idle time is set by the statement: screen save time = t 15 where t is the time in minutes and can range from 1 to 20. If the statement is not included in the JEEVES.INI file then the default time of 20 minutes will be used. A save time of 0 will disable the save screen option. Screen Update Period Jeeves updates information displayed on the screen at a rate determined by the statement: screen update period = p where p is the time in seconds. Valid values for p range from 1 to 5 with the default value being 2 (the default being used if the statement is not included in the JEEVES.INI file). Jeeves will accept a value of 0 which will result in the screen being updated continuously. However, this should only be used for diagnostic purposes as it will dramatically slow Jeeves down. Examples The following are examples of JEEVES.INI files: Example 1 lpt1=HPLJ4|Hewlett Packard LaserJet 4 /r lpt2= lx850 | Epson 9 pin matrix COM1 =plotter temp directory=d:\prtfiles screen save time=10 screen update period = 5 Example 2 lpt2=claser | Colour laser printer temp directory=\jeevprog\tmpfiles Screen Displays There are four screen displays which give information about the program itself, the print queues, the connections to other computers and some operational statistics. Jeeves starts by displaying details about the first print queue listed in the JEEVES.INI file, but the other screens can be displayed by pressing one of the function keys F1 to F4 as listed below. The displays are updated at a rate determined by the "screen update period" statement in the JEEVES.INI file. 16 Key Assignments Key Operation F1 Display program details F2 Display successive print queues F3 Display current connections F4 Display operational statistics up arrow Move to top of queue/connection list dn arrow Move to bottom of queue/connection list Alt+X Abort program and exits to DOS Queue Display Each of the queue names listed in the JEEVES.INI file will have its own display showing details about the queue and the list of files (print jobs) pending. Pressing the F2 key will cycle through the different queues. The USER, FILENAME and PRIORITY are determined by Jset on the remote computer. The priority values range from 0 to 9 with 0 being the highest priority. There are three stages in the printing of a file and these are shown in the status column. "Transfer" indicates that data is being received from the remote computer, "Ready" means that the data transfer is complete and the file is waiting to be printed, and "Printing" indicates that the data is being sent to the printer. Along side the "Printing" status is the percentage of the file sent to the printer. Note that if the printer is turn off-line and thus the transfer of data to the printer stopped, the status will still display "Printing" though the device status at the top of the screen will change to "Off Line". Connection Display When a remote computer wants to send a file to Jeeves to be printed, a communication link or connection is made between the two computers. Information, including the file to be printed, is exchanged over this link and once complete the connection is terminated. Details about any current connections are shown in the connection display. However, in most cases the connections will last just a few seconds and as the connection display is usually updated every couple of seconds, many connections will be made and terminated before the display has time to list them. Jeeves' address is the internetwork address of the computer running the Jeeves program. The address consists of a network number which identifies the segment of a multisegmented network and a node address which uniquely identifies the adapter card in the computer. When Jeeves starts up, it sends out a packet onto the network requesting the network number from the nearest router (usually a Novell file server). If after several attempts, it doesn't get a response, Jeeves assumes that it is connected to an isolated segment and will set the network number to 0. The "BYTES IN" and "BYTES OUT" columns display the number of data characters received and sent by Jeeves. 17 Statistics Display The statistics display gives information about the status of Jeeves and some idea of how busy Jeeves is performing certain tasks. - Number of connections is the number of current communication links operating and is the same as that shown in the connection's display. - Broken connections with outstanding tasks is the number of connections which have been terminated but which still have instructions to carry out. Note that the printing of files is not regarded as a connection task. - Peak number of connections is the maximum number of simultaneous connections that Jeeves has serviced since the program was installed. - Total packets in and Total packets out are the sum of all data packets received by and sent from Jeeves since the program started. A data packet is of variable length with a maximum size of 554 bytes. - Performance, system is an overall indication of how busy Jeeves is. The value will be between 95 - 100 when Jeeves is idle and will fall, possibly to zero, when Jeeves is performing connection tasks and/or printing files. - Performance, parallel ports indicates whether the printers connected to the parallel ports LPT1, LPT2 and LPT3 respectively, are receiving data efficiently. A low value (less than 10) means that the printer is processing the data as fast as Jeeves can send it while a high value (greater than 90) means that the printer isn't processing the data fast enough. - Performance, serial ports is the same as for the parallel ports except that the values refer to the ports COM1, COM2, COM3 and COM4 respectively. - Available memory is the current amount (in Kbytes) of unused and available RAM. Approximately 20Kb is used to support each connection. - Number of incomplete transfer files is the number of print jobs that have been abandoned because the transfer of data from the remote computer to Jeeves was interrupted. - Number of print requests received is the total number of print jobs that Jeeves has serviced since the installation of the program. Terminating Jeeves It is usually a good idea to leave Jeeves running all the time as the client PCs will attempt to connect to Jeeves when they boot up (assuming the JSET program is loaded from the AUTOEXEC.BAT file). However, if Jeeves is down, this will not prevent the client PCs from starting. Press Alt+X to exit Jeeves and return control to DOS. Any connections to remote computers will be aborted and any printing will be abandoned without warning. It is recommended that all connections be terminated and printing completed before quitting Jeeves. 18 Listing Users Each time a remote computer requests connection to Jeeves, data from the computer's JSET initialisation file (JSET.INI) is sent to Jeeves to identify the user and computer. This data is stored in a file called IDENTIFY.LST in the current directory of the Jeeves computer. The information in the identification file can be listed by entering the command JEEVLIST at the DOS prompt. 19 CLIENT PROGRAMS Jlink enables DOS or Windows applications to print data on Jeeves. The core of the program is contained within the device driver JLINK.SYS while the initialisation and maintenance of the devices is carried out using the program JSET.EXE. Existing print devices such as the parallel devices LPT1 to LPT3 and the serial devices COM1 to COM4 may have their data redirected to Jeeves or entirely new devices may be created through which data is printed. Up to ten devices can be used, any three of which can send data simultaneously. Jlink can also insert characters (the prologue data) at the start of each print job and append characters (the epilogue data) at the end. Jlink The device driver JLINK.SYS, should be installed by inserting the following line in the computer's CONFIG.SYS file: device[high]=[path] jlink.sys [/b=size] The [high] option may be included if DOS has access to UMBs (see users' guide for DOS 5 or above) and the [path] should be included if the file JLINK.SYS is not in the root directory of the boot disk. The optional 'b' switch defines the amount of memory allocated to store all device prologue and epilogue data. This value can range from 0 to 4096 bytes. Jset Initialisation File The Jset initialisation file (JSET.INI) is primarily used to identify the computer and user to Jeeves. The client programs search the current directory and then the directories listed in the DOS search path for the file. Note that the program JSET requires write access to the file (i.e. you mustn't make JSET.INI read-only). The file is made up from the statements listed below (there should be one statement per line). JEEVES= [network_number : ]node This is the address of the computer running Jeeves and can be found from the Connection Display of Jeeves. You can leave out the network number (or set it 0) if you know that the client PC and Jeeves use the same network number. USERNAME= string A group of up to 13 characters identifying the user of the computer. FULL NAME= string Up to 29 character string. COMPUTER= string A 29 character maximum string used to identify the computer. ROOM=string A 19 character maximum string identifying the location of the client computer. PRIORITY=n Sets the printing priority in the range 0 (highest priority) to 9 (lowest priority). INTERNAL_STATUS=xxxxx Do not insert or change this line. The program JSET, creates and uses this line. 20 Example jeeves=1:0000ABCD1234 username=Bertie full name=Bertram W. Wooster computer=IBM PC compatible room= D030 priority=5 Jset Jset is used to link existing or specifically created devices to the print queues on Jeeves. Syntax jset device [queue_name] [/t=x] [/p=y] [/-int] [/-ps] [/u] [/s+|/s-] [/a=[d:][path]filename[.ext]] [/z=[d:][path]filename[.ext]] or jset /i [/s+|/s-] or jset [/?] Parameters device This is the name of an existing print device (such as LPT1) or the name of a device to be created. The device name should contain up to eight standard DOS filename characters and should be unique (i.e. no files with the same 8 character filename, even if they have an extension) as DOS will treat it as a reserved filename. If the device is not followed by a Jeeves queue name (see below), then Jset will attempt to delete the Jlink device. queue_name The queue_name is the print queue on Jeeves to which data will be sent. Switches /t=x This sets the end of print time-out value in seconds. x should be in the range 1 to 9 with the default being 10. /p=y The print priority defined in the JSET.INI file may be overridden by the 'p' switch. The value of y should be between 0 (highest priority) and 9. /-int The "minus interrupt" switch will prevent Jlink from redirecting print requests sent directly to the computer's BIOS (i.e. bypassing the device driver). This switch is applicable to the LPT and COM devices only. 21 /-ps By default, Jlink will monitor Print Screen requests (issued by pressing the PrtSc key) so that it can end the printing efficiently rather than having to wait for the end of print time-out to expire. However, if problems arise using the print screen facility, include the '-ps' switch to disable monitoring. This switch is only applicable to LPT1 and will be ignored if the '-int' switch is used. /u If the 'u' switch is used with only a device name, then the device will be removed without the user being prompted for confirmation. /s+ or /s- When the end of print time-out period has expired, Jlink will beep if sound is on (s+). The sound switch will affect all the devices which are timed-out. /a=[d:][path]filename[.ext] The 'a' switch is used to identify a file which contains prologue data to be sent to Jeeves at the start of every print job. The file size should be less than the available space in the prologue/epilogue file store. /z=[d:][path]filename[.ext] The 'z' switch identifies the epilogue file which is sent after the print job. /i Information about the status of Jlink and associated devices may be listed using the 'i' switch. /? The query switch lists the command line options. Creating a New Print Device There are several advantages to creating a new print device rather than redirecting one of the existing LPT or COM devices. (1) the existing devices remain attached to their local ports, (2) the device name can reflect the attached printer name, and (3) it is not necessary to remove the device before loading the Netware Shell (see "Compatibility with the Netware Shell"). Further, this is the recommended way to print from Windows applications. Enter the following command at the DOS prompt to create a print device: jset device queue_name For example, jset hplj_iv hplj4 would create a device called HPLJ_IV and would link this device to the Jeeves print queue called HPLJ4. Note that there should not be any files on the computer with the device name, even if the file has a filename extension. Thus, in the above example, there shouldn't be any files with the name HPLJ_IV such as HPLJ_IV.TXT (however, HPLJ_IV1.TXT would be OK). 22 Redirecting an Existing Device Unfortunately, may DOS programs will only print to specific devices; namely LPT1/2/3 and COM1/2. Furthermore, some programs will bypass the device driver and access the parallel or serial ports via the computer's basic input/output system (BIOS). For these programs it will be necessary to redirect the specific device. For example, if the program prints to LPT1, then enter the following command: jset lpt1 lq850 This will cause any data sent to LPT1, either to the DOS device via DOS function calls or to the BIOS via the printer interrupt 17(hex), to be redirected to the Jeeves print queue LQ850. If the '-int' switch is included in the command line, then only data sent to the DOS device will be redirected. One problem redirecting data sent through the BIOS, is knowing when the print job is complete. The Jlink driver determines this by monitoring the time between each character received. If this time exceeds a preset value (the end of print time-out period), then Jlink assumes the application has finished printing and tells Jeeves to queue the data for printing. You can tell when Jlink has determined the end of the print job by using the sound switch (/s+) in the JSET command. Note that programs which bypass both the device driver and BIOS and access the hardware directly, cannot have their printing redirected. Removing a Device To delete a device created by Jlink or restore an existing device, enter the device name by itself. Thus to delete the device HPLJ_IV, enter the following: jset hplj_iv Confirmation will be requested before the device is removed unless the 'u' switch is included in the command line. Inserting Prologue and Epilogue data Jlink has the ability to send predefined data to a Jeeves print queue before (the prologue data) and after (the epilogue data) a program's print data. Files containing the prologue and epilogue data can be stored in the Jlink driver by using the 'a' and 'z' switches respectfully. Each device can store its own prologue and epilogue data but the total size of all the devices' data must be less than the amount of memory allocated when JLINK.SYS was installed with the 'b' switch. Note that Jlink will send the prologue and epilogue data exactly as it is in the file and thus all carriage returns (ASCII 13), line feeds(ASCII 10), end of file markers (ASCII 26), etc. will be included. There are at least two ways to make use of this facility. The first is to store a header or banner page which would include the user's name, in the prologue file. Then, each time the user sends data to the printer, the header page would be printed first identifying the owner of the print job. 23 The other possible use is to store printer emulation code in the prologue file which would program the printer to emulate a different type of printer. The epilogue data could then be used to restore the printer back to its original state. For example, the Star Micronics LaserPrinter 8III can emulate three different printers; the HP LaserJet III (the default), the Epson EX-800 and the IBM Proprinter. It would be possible therefore to create three Jlink devices, each linked to the same Jeeves print queue but with different prologue data. This would be done as follows: jset hplj3 star8iii /a=c:\utils\hpljemu.dat jset ex800 star8iii /a=c:\utils\ex800emu.dat /z=c:\utils\hpljemu.dat jset ibmpro star8iii /a=c:\utils\ibmpemu.dat /z=c:\utils\hpljemu.dat where STAR8III is the Jeeves print queue serving the Star printer, HPLJ3, EX800 and IBMPRO are the Jlink devices and HPLJEMU.DAT, EX800EMU.DAT and IBMPEMU.DAT are the files containing the emulation codes for the respective printers. Using Jlink with Windows The general method to use Jlink with Windows is to create a new print device (as described above) and then insert the name of the device in the [ports] section of the WIN.INI file. For example, if the new device was called HPLJ_IV, then the [ports] section of the WIN.INI file may look like: [ports] ; A line with [filename].PRN followed by an equal sign causes ; [filename] to appear in the Control Panel's Printer Configuration dialog ; box. A printer connected to [filename] directs its output into this file. LPT1:= LPT2:= LPT3:= COM1:=9600,n,8,1 COM2:=9600,n,8,1 COM3:=9600,n,8,1 COM4:=9600,n,8,1 FILE:= EPT:= HPLJ_IV:= The next step is to link a Windows printer to the Jlink device. This is done by opening the Printers option in the Control Panel, selecting the appropriate printer and choosing the Configure (v3.0)/Connect(v3.1) button. From the list of ports, select HPLJ_IV and choose the OK button. Windows 3.1 makes the use of an existing port (such as LPT1) simply a case of clearing the 'Fast Printing Direct to Port' box in the Connect dialog window. With this box cleared, Windows will print via the LPT/COM redirected device. However, the situation becomes somewhat more complex with Windows 3.0. Whether Windows 3.0 will print to the redirected device or not depends on several factors including (1) the presence of a physical port, (2) the loading of a network shell, and (3) the presence of a network driver. One method to force Windows 3.0 to print via a redirected device is to add an extension to the existing device name. For example, if Jlink has redirected LPT1, then the device LPT1.DOS could be added to the [ports] section of the WIN.INI file and the appropriate printer 24 connected to this port. Windows 3.0 would then attempt to print data to the file LPT1.DOS which DOS would interpret as the device LPT1 (LPT1 being a reserved filename). If you do have to redirect an existing port for DOS applications and you want to use Windows applications as well, it is advisable to create a device for the Windows applications and redirect the LPT port as well. For example: jset lpt1 hplj4 jset hplj_iv hplj4 would redirect the LPT1 port for DOS applications and would create the device HPLJ_IV for Windows applications. Compatibility with the Netware Shell The Netware Shell (NETX) takes a heavy handed approach to accessing DOS facilities. Not only does it trap all calls to the BIOS parallel interrupt 17 services rather than passing on the interrupt if not required, it also bypasses the LPT1, 2 and 3 device drivers in the DOS device driver chain rather than inserting the devices at the beginning of the chain as is usual. This in itself would not be a problem except that when the shell is removed, its attempts to restore the chain to its original state fail if the LPT devices do not reside in DOS (as would be the case if Jlink had inserted its own versions of the LPT devices). The consequence of this is that Jlink must not have redirected any of the LPT devices when the Netware Shell is loaded. However, once the shell is loaded, it is then possible to use Jset to redirect any or all of the LPT devices. Similarly the Jlink devices must be removed before the Netware Shell is unloaded. The circumstances mentioned above apply only to the LPT devices. The COM devices and any Jlink created devices are unaffected by the Netware Shell. 25 Jprint Jprint sends a specified file to a print queue on Jeeves for printing. It also displays diagnostic information. Syntax jprint [d:][path]filename[.ext] queue_name [/ff] or jprint /l or jprint /? Parameters [d:][path]filename[.ext] specifies the location and name of the file to print. queue_name is the print queue to which the file will be sent. Switches /ff Adds a form-feed (new page) command to the end of the file if the last character of the file is not already a form-feed. /l The L switch lists available queue names and device descriptions. /? Lists command line parameters. Description Jprint requests a connection to Jeeves and once established, sends the specified file and its print priority (as defined in JSET.INI) to the print queue queue_name. The connection to Jeeves is then terminated and the file printed. Note that Jprint does not use the Jlink device driver. Example jprint c:\data\fig.pcl hplj4 26 APPENDICES Appendix A: System Requirements Processor 8088 or 80x86. Jeeves will work adequately with a 4.7MHz clocked 8088 computer. RAM 512 Kb minimum Hard Disk 10Mb recommended minimum. This is to allow space for temporary print files to be stored before printing. It would also be possible to use a diskless workstation with a RAM or network drive. Video Any video card and monitor capable of displaying 80x25 text including MDA, HGC, CGA, EGA, VGA, etc. Parallel Ports 0 to 3. Jeeves drives the parallel ports via the BIOS int 17(hex) interrupt. Serial Ports 0 to 4. Jeeves drives the serial ports via the BIOS int 14(hex) interrupt. Network Interface Card Any network card capable of supporting Novell's IPX/SPX protocol such as ethernet. 27 Appendix B: Acquiring IPX A disk containing network drivers will usually be supplied with your network card. These drivers should include the Netware dedicated IPX driver, IPX.COM and the Open Data-Link Interface version, IPXODI.COM. However, if you've got an ethernet card without drivers, you may be able to obtain the necessary software from sites on the Internet or by mail from Columbia University, NY, USA. The Crynwr Collection of Packet Drivers A packet driver is a program which provides an interface between the ethernet card and one or more network applications. The Crynwr collection contains packet drivers for common ethernet cards and these are available by anonymous ftp from SimTel mirror sites. The drivers are contained in the file ....../pktdrvr/pktdXX.zip where XX is the version number. Primary mirror site: Rochester, Michigan oak.oakland.edu Secondary mirror sites: St. Louis, MO wuarchive.wustl.edu Corvallis, OR archive.orst.edu Falls Church, VA ftp.uu.net Australia archie.au UK src.doc.ic.ac.uk Finland ftp.funet.fi Germany ftp.uni-paderborn.de Israel ftp.technion.ac.il Switzerland ftp.switch.ch Taiwan nctuccca.edu.tw You can also purchase packet drivers on PC diskette by postal mail from Columbia University. Their address is: Kermit Distribution, Dept PD Columbia University Academic Information Systems 612 West 115th Street New York, NY 10025 Tel. (+1) 212 854-3703 Packet Driver IPX At the time of writing, the Crynwr collection (version 11) also contained a packet driver compatible version of IPX named PDIPX.COM. This program is loaded after the packet driver and enables IPX/SPX services. Details of how to install the software are included with the program. 28 Appendix C: System Messages Jeeves Access denied. DOS is denying access to a file; usually because an attempt is being made to create or write to a file that already exists and is read-only. DOS version must be 3.3 or above. You need to update your version of DOS. Fatal error has occured in procedure XX error code NN. Jeeves has detected an error condition which it is unable to resolve and has terminated. Please report all such program faults to the author stating the procedure code (XX) and error code (NN). Identification file IDENTIFY.LST not found. Do you wish to create one ? (Y/N): Jeeves can't find the user identification file in the current directory and is requesting that it be created. Once created, users are added to this file each time they connect to Jeeves. If you don't create the file, the program will simply terminate. No IPX/SPX sockets left. Jeeves is unable to open a communication socket. Check that the line "ipx sockets = 25" is included in the SHELL.CFG or NET.CFG file and reload the IPX driver. No response from router. The network number will be set 00000000. Jeeves has sent out several Routing Information Protocol (RIP) packets but has not got a response and thus assumes that it is connected to an isolated segment. Not enough memory. You don't have enough RAM in your computer. Obtaining routing information...... Jeeves has sent out a Routing Information Protocol (RIP) packet and is waiting for a response from a Novell router. Routing information received. A router has responded with the network number which forms part of Jeeves' address. SPX not running. Program aborted. Jeeves is unable to initialise the SPX driver and has terminated. The IPX driver (IPX.COM or IPXODI.COM) has not been loaded or the IPXODI.COM has been loaded with the 'a' option or the IPX.COM driver is an old version. The data file JEEVES.DAT has been corrupted. It is being reset. Jeeves has detected that its data file has changed since the last time Jeeves was run and has reset the file to its default values. Too many open files. DOS has run out of file handles. Set "files=30" (or more) in the CONFIG.SYS file and reboot. Unable to create file filename. This is usually because the directory is read-only or the file already exists and is read-only. Unable to find file filename. Jeeves is unable to find the specified file. 29 Unable to find path to filename. Jeeves is unable to find the directory which is specified to contain the file filename. Unable to open IPX socket. The IPX driver has run out of sockets or some other application is using Jeeves' socket number, 494A. Make sure the line "ipx sockets=25" (or more) is included in the NET.CFG or SHELL.CFG files. Unable to read file filename. There is a possible disk fault or read- access has been denied. Unable to write data to file filename. The disk is full or write-access has been denied. Unlisted error. DOS has returned a disk error which Jeeves doesn't understand. Jset All communication channels in use. Jset is unable to communicate with Jeeves as the Jlink driver is already using its maximum of three channels. This should only happen in a multi-tasking environment such as Windows when three jlink devices are sending data to Jeeves at the same time. A channel will be freed when a device has finished sending data. Cannot install any more devices. Jset has reached the limit of 10 devices. Connection prematurely terminated. Possible faulty network. Device name missing. You must include a device name. Device name too long. The device name should not be more than 8 characters long. Incorrect version of JLINK.SYS. You must use version x.x You need to load the version of jlink that came with Jset. INT 2F multiplex code conflict. AH=0xCE. Jset uses the DOS interrupt 2F, code CE (hex) to locate the jlink device driver. However, another program has responded to the code and Jset cannot locate the device driver. You will need to unload the other memory resident program. Jeeves unable to establish connection. Jset has tried to establish a connection with Jeeves, but Jeeves has responded with an error condition and had denied the connection. This will occur when Jeeves has run out of memory, is already processing its maximum of 20 connections, has run out of IPX sockets or has encountered disk errors. JLINK driver not installed. Jset cannot find the JLINK.SYS device driver. Make sure that the line "device=jlink.sys" is in the CONFIG.SYS file. JSET requires write access to xxxxx. Jset is unable to write to the specified file and cannot continue. Network failure. Jset cannot re-establish connection with Jeeves. This is most likely due to a faulty network. 30 No IPX/SPX sockets left. Jset is unable to open a communication socket. You will need to increase the number of ipx sockets in the SHELL.CFG or NET.CFG file and reload the IPX driver. No response from Jeeves. Incorrect network address or Jeeves not running. Check that the address at the top of the Jeeves connection display is the same as that shown by the Jset /i command. If they are different, then you will need to edit the "jeeves=" line in the JSET.INI file. Another thing to check is that both Jeeves and the client computer are using the same ethernet frame type. Most ethernet LAN drivers will default to Ethernet_802.3, but you can change this by setting the "frame" option in the NET.CFG file. For example the following lines from a NET.CFG file would set the frame type to Ethernet_II for a driver named drivername: Link Driver drivername Frame Ethernet_II Requested print queue not found. The name of the print queue specified in the Jset command does not match any found on Jeeves. You can use the Jprint /L command to list available print queues. SPX not running. Jset is unable to initialise the SPX driver and has terminated. The IPX driver (IPX.COM or IPXODI.COM) has not been loaded or the IPXODI.COM has been loaded with the 'a' option or the IPX.COM driver is an old version. There is not enough space in JLINK file store to save the file xxxxx. The jlink driver has a limited amount of memory to store prologue and epilogue data and the file you are attempting to store is too big. You should either re-install the jlink driver with a larger buffer, the maximum size of which is 4096 (i.e. device=jlink.sys /b=4096) or delete any other current devices which have prologue or epilogue data. Note that the largest file you can store is 4096 bytes. This device has already been installed. Enter "JSET device_name" to remove specified device. You have tried to install a device name that already exists. If you want to install a device with different parameters, you must remove the old version first. Unable to confirm print queue name. Jset cannot verify the requested print queue name as it is unable to connect to Jeeves. However, the device will still be installed and will attempt to connect to Jeeves again when the device is sent data to print. Unable to open file xxxxx. Jset is unable to open the specified file. Unable to read file xxxxx. Jset is unable to read the specified file. Unable to remove device. Device is active. Jset cannot remove an installed device that is currently in use. You should wait until the device has finished printing and try again. Unable to remove device. Device not found. Jset cannot find the device you specified. Enter Jset /i to get a list of installed devices. 31 Jprint All server connections in use. Jeeves has reached its limit of 20 simultaneous connections. Try the Jprint command again when Jeeves isn't so busy. Cannot find specified file to print. The file entered on the Jprint command line cannot be found. Connection terminated. Jprint has closed the connection with Jeeves. No sockets available on server. Jeeves has run out of communication sockets. Make sure the line "ipx sockets=25" (or more) is included in the NET.CFG or SHELL.CFG files on the Jeeves computer. No sockets left. Jprint is unable to open a communication socket. You will need to increase the number of ipx sockets in the SHELL.CFG or NET.CFG file and reload the IPX driver. Requested print queue doesn't exist. Jeeves has returned an error which indicates that the print queue name specified by Jprint does not exist. (This error should not normally occur as Jprint compares the print queue name entered on the command line with a list of queue names received from Jeeves and reports an error if the requested queue is not in the list. See ".... queue not found" below) Requested print queue is full. Try again when Jeeves has printed files from the print queue. Requested print queue not found. The print queue name entered on the Jprint command line is not recognised by Jeeves. Server disk is full. Disk space will be freed when Jeeves has printed some files. Server out of memory. Jeeves cannot print the specified file as all Jeeves' available memory is in use. Memory will become available when Jeeves has finished printing other files. Server unable to create file. Jeeves has been unable to create a file on its disk. SPX not running. Program aborted. Jprint is unable to initialise the SPX driver and has terminated. The IPX driver (IPX.COM or IPXODI.COM) has not been loaded or the IPXODI.COM has been loaded with the 'a' option or the IPX.COM driver is an old version. Unable to establish primary connection. Server is down, incorrect address or network failure. Check that the address at the top of the Jeeves connection display is the same as that in the JSET.INI file. Also check is that both Jeeves and the client computer are using the same ethernet frame type. Most ethernet LAN drivers will default to Ethernet_802.3, but you can change this by setting the "frame" option in the NET.CFG file. For example the following lines from a NET.CFG file would set the frame type to Ethernet_II for a driver named drivername: Link Driver drivername Frame Ethernet_II 32 Unable to establish secondary connection. Server is down or network failure. As the primary connection was successful, the inability to reconnect must be due to Jeeves being switched off or a network error. Unable to open specified file for reading. Jprint cannot open the file entered on the command line. Unable to read specified file. Jprint cannot read the file entered on the command line. Unlisted error. Jprint does not recognise an error received from DOS. Warning. This is an old version of JPRINT. Jeeves may not support old versions of client software. Warning. You are connecting to an old version of Jeeves. New features added to a later version of Jprint will not be supported by an old version of Jeeves. 33 Appendix D: Technical Notes Specifications DOS version MS DOS 3.3 and above RAM 512Kb minimum Hard disk size 10Mb minimum Communication protocol Novell's Sequenced Packet Exchange (SPX) Primary socket number 494Ah Programming Microsoft MASM v6.1 Maximum values Users Limited by disk space (128 bytes/user) Simultaneous connections 20 (RAM dependent) Print queues 7 (3 parallel & 4 serial) Files/queue 50 Maximum character string lengths Queue name 70 (queue_name + device_description) User name 13 Full name 29 System name 29 Room 19